package com.sishu.njrtsdms.service;


import com.sishu.njrtsdms.domain.core.PageInfo;
import com.sishu.njrtsdms.domain.dto.UserDTO;
import com.sishu.njrtsdms.domain.vo.UserVO;
import com.sishu.njrtsdms.jooq.codegen.tables.pojos.User;

import org.jooq.types.ULong;
import org.springframework.transaction.annotation.Transactional;


public interface UserService {
    /**
     * 更新用户登录信息
     */
    void updateUserLoginInfo(User user);

    /**
     * 根据用户名查询用户信息
     */
    UserVO selectUserByUsername(String username);

    /**
     * 用户信息分页查询
     *
     * @param userDTO 用户查询条件
     * @return 用户分页信息
     */
    PageInfo<UserVO> page(UserDTO userDTO);


    /**
     * 根据id查询用户
     *
     * @param userId 用户id
     * @return 用户信息
     */
    UserVO queryOneUserByUserId(ULong userId);

    /**
     * 新增用户
     *
     * @param userDTO 新增用户信息
     */
    void addUser(UserDTO userDTO);

    /**
     * 修改用户
     *
     * @param userDTO 用户修改信息
     */
    void updateUser(ULong userId, UserDTO userDTO);


    /**
     * 用户总数精确查询
     *
     * @param userDTO 查询条件
     * @return 查询总数
     */
    Long totalCount(UserDTO userDTO);

    /**
     * 删除用户 逻辑删除
     *
     * @param userId 用户id
     */
    @Transactional
    void deleteUser(ULong userId);
}